#include <stdio.h>
#pragma pack(16)
struct BBB {
    long num;
    char ha;
    short ba[5];
}b;

int main() {
    printf("%d\n", sizeof(b.num));//8
    printf("%d\n", sizeof(b.ha)); //1
    printf("%d\n", sizeof(b.ba)); //10 ,short大小是2
    //最大对齐数是8

    printf("%d\n", sizeof(BBB));
    return 0;
}

//这里ba数组的最大对齐数是2，因为short大小2小于对齐数8

//sizeof(BBB)=8+1+1+(2*5)=20，这里的1是为了让ba数组对齐到2的倍数,但是对齐规则里面有个结构体的总大小，必须是最大对齐数的整数倍，这里最大对齐数是8，也就是结果需要是8的倍数，最终等于sizeof(BBB)=24

